#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
using namespace std;
//
//class Solution {
//public:
//    bool isPalindrome(string s)
//    {
//        string s1;
//        string s3;
//        for (auto ch : s)
//        {
//            if (ch >= 'A' && ch <= 'Z')
//            {
//                s1 += ch + 32;
//            }
//            else if (ch >= 'a' && ch <= 'z')
//            {
//                s1 += ch;
//            }
//        }
//        s3.append(s1.rbegin(), s1.rend());
//        if (s1 == s3)
//        {
//            return  true;
//        }
//        else
//        {
//            return false;
//        }
//    }
//};
//
//int main()
//{
//    Solution ss;
//    string s1;
//    getline(cin,s1);
//    cout << ss.isPalindrome(s1);
//    return 0;
//}
//
//class Solution {
//public:
//    int firstUniqChar(string s)
//    {
//        for (int i = 0; i < s.size(); ++i)
//        {
//            int index = s.find(s[i]);
//            int reverse_index = s.rfind(s[i]);
//            if (index == reverse_index)
//                return i;
//        }
//        return -1;
//    }
//};

class Solution {
public:
    string addStrings(string num1, string num2)
    {
        string ss;
        int upnum = 0;
        int begin1 = 0, end1 = num1.size() - 1;
        int begin2 = 0, end2 = num2.size() - 1;
        int s1 = 0, s2 = 0, ret = 0;
        while (end1 >= begin1 || end2 >= begin2)
        {
            s1 = end1 >= begin1 ? num1[end1] - '0' : 0;
            s2 = end2 >= begin2 ? num2[end2] - '0' : 0;
            ret = s1 + s2 + upnum;
            upnum = ret / 10;
            ss += ret % 10 + '0';
            end1--;
            end2--;
        }
        if (upnum == 1)
        {
            ss += "1";
        }
        string s6(ss.rbegin(), ss.rend());
        return s6;
    }
};

int main()
{
    string num1 = "11";
    string num2 = "123";
    Solution s1;
    cout << s1.addStrings(num1,num2);
    return 0;
}